﻿//-----------------------------------------------------------------------
// <copyright file="Identifier.cs" company="Vela">
//     Copyright © Vela. All rights reserved.
// </copyright>
// <author>Nick Van Eeckhout</author>
//-----------------------------------------------------------------------

using System;
using Vela.RM.Core.Support;

namespace Vela.RM.Core.DataTypes.BasicPackage
{
	/// <summary>
	/// Type for representing identifiers of real-world entities. Typical identifiers include drivers licence number, social security number, vertans affairs number, prescription id, order id, and so on.
	/// USE: Identifier is used to represent any identifier of a real thing, issued by some authority or agency.
	/// MISUSE: Identifier is not used to express identifiers generated by the infrastructure to refer to information items; the types OBJECT_ID and OBJECT_REF and subtypes are defined for this purpose.
	/// </summary>
	[Serializable, OpenEhrName("DV_IDENTIFIER")]
	public class Identifier
	{
		/// <summary>
		/// Authority which issues the kind of id used in the id field of this object.
		/// </summary>
		[OpenEhrName("issuer")]
		public string Issuer
		{
			get;
			set;
		}

		/// <summary>
		/// Organisation that assigned the id to the item being identified.
		/// </summary>
		[OpenEhrName("assigner")]
		public string Assigner
		{
			get;
			set;
		}

		/// <summary>
		/// The identifier value. Often structured, according to the definition of the issuing authority’s rules.
		/// </summary>
		[OpenEhrName("id")]
		public string Id
		{
			get;
			set;
		}

		/// <summary>
		/// The identifier type, such as “prescription”, or “SSN”. One day a controlled vocabulary might be possible for this.
		/// </summary>
		[OpenEhrName("type")]
		public string Type
		{
			get;
			set;
		}
	}
}